package eteam.aps.systemservice.dal;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import eteam.aps.systeminterface.model.entity.OnlineUserEntity;
import eteam.aps.systemservice.dal.mapper.IOnlineUserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 在线用户数据操作类
 */
@Service
public class OnlineUserDal {
    @Autowired
    private IOnlineUserMapper onlineUserMapper;

    /**
     * 创建在线用户
     *
     * @param entity: 在线用户实体
     */
    public void insertOnlineUser(OnlineUserEntity entity) {
        onlineUserMapper.insert(entity);
    }

    /**
     * 根据userid删除Token
     *
     * @param userId: 用户ID
     */
    public Integer deleteTokenByUserId(String userId) {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("FUserId", userId);
        return onlineUserMapper.deleteByMap(map);
    }

    /**
     * 根据Token获取在线用户
     *
     * @param token: 用户Token
     * @return: 在线用户模型
     */
    public OnlineUserEntity getOnlineUserById(String token) {
        return onlineUserMapper.selectById(token);
    }

    /**
     * 根据TokenInfo获取在线用户
     *
     * @param tokenInfo: 用户TokenInfo
     * @return: 在线用户模型
     */
    public OnlineUserEntity getOnlineUserByToken(String tokenInfo) {
        return onlineUserMapper.selectOne(new QueryWrapper<OnlineUserEntity>().eq("FTokenInfo", tokenInfo));
    }

    /**
     * 分页查询在线用户列表
     *
     * @param page
     * @param wrapper
     * @return
     */
    public IPage<OnlineUserEntity> selectOnlineUserPage(IPage<OnlineUserEntity> page, QueryWrapper<OnlineUserEntity> wrapper) {
        return onlineUserMapper.selectOnlineUserPage(page, wrapper);
    }

    /**
     * 根据ID删除Token
     *
     * @param tokenId: ID
     */
    public Integer deleteTokenById(String tokenId) {
        return onlineUserMapper.deleteById(tokenId);
    }

    /**
     * 根据ID集合删除Token
     *
     * @param tokenIds: ID集合
     */
    public Integer deleteTokenByIds(List<String> tokenIds) {
        return onlineUserMapper.deleteBatchIds(tokenIds);
    }
}
